package gui;

/*
 * Esse arquivo é parte do Software new Recicle
 * 
 * Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 * Copyright (C) 2011-$AnoCorrente$ João dos Santos Gonçalves
 * Copyright (C) 2011-$AnoCorrente$ Lucas Ximenes da Fonseca
 * 
 * new Recicle é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 * de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 * conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 * na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 * se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 * 
 * Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 * contato nos e-mails <barbosa.edrd@gmail.com>, <john.jsg@hotmail.com>, <lxf.lucas@gmail.com>.
 */

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;

public final class EscolheImagem {
    
    private static JFileChooser FILEIMAGEM;
    private static File IMAGEM;
    private static FileNameExtensionFilter filtroExtensao;
    private static String NOMEIMAGEM;
    
    public static String imagemPath() {
        IMAGEM = null;
        
        FILEIMAGEM = new JFileChooser();
        
        FILEIMAGEM.setPreferredSize(new java.awt.Dimension(800, 500));
                
        traducaoBr();
        
        FILEIMAGEM.setRequestFocusEnabled(true);
                
        filtroExtensao = new FileNameExtensionFilter("Imagens JPG e PNG", "jpg", "jpeg", "png");
               
        FILEIMAGEM.setFileFilter(filtroExtensao);
        
        int result = FILEIMAGEM.showOpenDialog(null);
        
        // Se botão cancela foi apertado
        if ( !(result == JFileChooser.CANCEL_OPTION) ) {
            IMAGEM = FILEIMAGEM.getSelectedFile();

            NOMEIMAGEM = IMAGEM.getName();

            return IMAGEM.toURI().getPath();
        }
        return null;
    }
    
    /**
     * Valida se a imagem e sua extensão pertence a: JPG ou PNG.
     * @return Verdadeiro se a imagem for válida, se o contrário retorna falso.
     */
    public static boolean validacao() {
        if ( (IMAGEM == null) || (IMAGEM.getName().equals("")) ||
                (imagemValida() != true) || (IMAGEM.exists() != true ) ) {
            
            return false;
        }
        IMAGEM = null;
        return true;
    }
    
    public static boolean imagemValida() {
        String[] testeImagem;
        testeImagem = NOMEIMAGEM.split("\\.");
        boolean imagemValidada = false;
        String[] ext = { "jpg", "jpeg", "png" };
        
        if ( testeImagem.length > 0 ) {
            
            String extensaoImagem = testeImagem[ (testeImagem.length - 1) ];
            
            for (String e : ext) {
                if ( (extensaoImagem.toUpperCase() ).equals( e.toUpperCase() )) {
                    imagemValidada = true;
                }
            }
        }
        return imagemValidada;
        
    }
    
    private static void traducaoBr() {
        UIManager.put("FileChooser.openDialogTitleText", "Abrir");
        UIManager.put("FileChooser.lookInLabelText", "Consultar em");
        UIManager.put("FileChooser.openButtonText", "Abrir");
        UIManager.put("FileChooser.cancelButtonText", "Cancelar");
        UIManager.put("FileChooser.fileNameLabelText", "Nome do Arquivo");
        UIManager.put("FileChooser.filesOfTypeLabelText", "Tipo de Arquivo");
        UIManager.put("FileChooser.openButtonToolTipText", "Abrir o Arquivo Selecionado");
        UIManager.put("FileChooser.cancelButtonToolTipText","Cancelar");
        UIManager.put("FileChooser.fileNameHeaderText","Nome");
        UIManager.put("FileChooser.upFolderToolTipText", "Subir um Nível");
        UIManager.put("FileChooser.homeFolderToolTipText","Área de Trabalho");
        UIManager.put("FileChooser.newFolderToolTipText","Criar Nova Pasta");
        UIManager.put("FileChooser.listViewButtonToolTipText","Lista");
        UIManager.put("FileChooser.newFolderButtonText","Criar Nova Pasta");
        UIManager.put("FileChooser.renameFileButtonText", "Renomear");
        UIManager.put("FileChooser.deleteFileButtonText", "Deletar");
        UIManager.put("FileChooser.filterLabelText", "Tipo");
        UIManager.put("FileChooser.detailsViewButtonToolTipText", "Detalhes");
        UIManager.put("FileChooser.fileSizeHeaderText","Tamanho");
        UIManager.put("FileChooser.fileDateHeaderText", "Data de Modificação");
        UIManager.put("FileChooser.acceptAllFileFilterText", "Todos os Arquivos");
        UIManager.put("FileChooser.", "Todos os Arquivos");

        SwingUtilities.updateComponentTreeUI(FILEIMAGEM);
    }
}